/*
 * @Author: liu_lizhi
 * @Date: 2021-01-12 16:28:05
 * @LastEditTime: 2021-05-18 09:55:16
 * @Description: 页面加载业务逻辑处理
 */
import { Toast } from 'vant'

import Utils from '@/utils/util'
import DbUtil from '@/utils/dbUtil'
import request from '@/utils/request'

import SortCodeSql from '@/utils/sqls/cc/sortCodeSql'
let isOpen = true //测试用

let loadingBus = {
    //加载业务过程
    /**
     * 1.创建应用目录
     * 2.获取钥匙
     * 3.获取登录信息
     * 4.获取设备信息
     * 5.保存登录信息
     * 6.获取缓存更新
     * 7.获取地图服务地址（暂时不需要）
     * 8.进入主页面
     */
    
    init: function () {
        //初始化加载业务信息
        return new Promise((resolve, reject) => {
            // 模拟使用创建文件目录
            //在Pc上模拟安卓端登录后所有操作 1.创建目录 2.获取keys 3.获取用户信息用于本地快速处理 4.获取设备信息，用于
            Utils.baseUtil.createAllFloder().then(()=> {
                console.log('缓存业务数据-创建目录成功')
                //单独编码，防后续有变更或内容过多可直接提取为方法
                //直接缓存各项基础数据
                let loadingMsg = '获取钥匙中...'
                loadingBus.loadingMessage(loadingMsg)
                loadingBus.getKeys().then(res => {
                    loadingMsg = '缓存业务数据...'
                    loadingBus.loadingMessage(loadingMsg)
                    console.log('缓存业务数据-获取key成功')   
                    return loadingBus.getCacheDataByUpdate()  
                }).then(res => {
                    console.log('缓存业务数据-缓存基础信息成功') 
                    resolve()
                }).catch(err => {
                    //缓存数据异常
                    console.log('缓存业务数据-缓存数据异常',err)    
                    reject(err)
                })
            }).catch(err => {
                //创建目录异常
                reject(err)
                console.log('缓存业务数据-创建目录异常',err)
            })
        })
    },
    getKeys: function() {
        // 获取登录key
        return new Promise((resolve, reject) => {
            //开关，测试下载用-接口通后移除-start
            if (isOpen) {
                setTimeout(()=> {
                    resolve()
                },1000)
                return 
            }
            //开关，测试用-接口通后移除-end
            // 密钥信息为空，重新获取
			if (Utils.baseUtil.isEmptyString(localStorage.getItem("salt"))) {
                var url = 'bdydzy-ptmo-pub/app/securityKey/v2/getKeys'                
                var params = {
                    imei: Utils.deviceInfo.getDeviceIMEL(),
                    roleCode: "",
                    userId: localStorage.getItem("userId")
                }
                request.post(url, params).then(res => {
                    if (res.success) {
                        //存储
                        localStorage.setItem("salt", JSON.stringify(res.data));
                    }
                    resolve()
                }).catch(err => {
                    reject(err)
                })
			} else {
				resolve()
			}
        })
    },
    /**
     * @description: 缓存应用所需基础数据
     * 1.加载系统编码
     * 2.页面配置缓存更新
     * 3.组织缓存更新
     * 4.人员缓存更新
     * 5.变电站列表已下载更新检查
     * 6.自动更新当日任务相关变电站
     * 7.个人收藏更新(可不要)
     */
    getCacheDataByUpdate: function() {
        //获取缓存-未完checkSubstationCache
        //（2-8）是否直接放在android端做
        // 2-8内容是请求后台，返回数据写入本地库
        return new Promise((resolve, reject) => {
            //加载系统编码
            loadingBus.loadSortCode().then(res => {
                // 缓存结束
                resolve()
            }).catch(err => {
                reject(err)
            })
        })
    },
    loadSortCode: function() {
        //加载系统编码
        return new Promise((resolve, reject) => {
            DbUtil.execOneSql(
				SortCodeSql.SELECT_ALL_CODE,
				[],
				function(tx, result) {
					console.log("加载系统编码—成功");
					var sortCodeArr = []
					for(var i = 0; i < result.rows.length; i++) {
						sortCodeArr.push(result.rows.item(i))
                    }
                    localStorage.setItem("sortCodes",JSON.stringify(sortCodeArr))
					// window.sortCodes = sortCodeArr
					resolve(sortCodeArr)
				},
				function(error) {
                    reject(error)
				}
			);
        })
    },
    loadingMessage: function(msg) {
        //loading提示
        Toast.loading({
            duration: 0,
            message: msg,
            forbidClick: true,
            overlay: true
        })
    },
 }

 export default loadingBus